package design_pattern.template;

/**
 * @Package: design_pattern.template
 * @ClassName: Template
 * @Author: x2606
 * @CreateTime: 2022/3/11 17:55
 * @Description: 模板模式
 */

public class Template {
    public static void main(String[] args) {
        B b = new B();
        b.calculate();

        C c = new C();
        c.calculate();

    }
}
//不同类同时完成同一job计算时间
abstract class A{
    //将需要各自实现内容抽象，由子类继承实现。
    public abstract void job();

    //将公共逻辑代码在父类实现
    public void calculate(){
        long start=System.currentTimeMillis();
        job();
        long end=System.currentTimeMillis();
        System.out.println("计算时间"+(end-start)+"ms");
    }

}
class B extends  A{
    @Override
    public void job() {
        long sum=0;
        for (int i = 0; i < 100000000 ; i++) {
            sum+=i;
        }
    }
}
class C extends A{
    @Override
    public void job() {
        long sum=0;
        for (int i = 0; i < 1000000 ; i++) {
            sum*=i;
        }
    }
}

